Cytosim  PI
Cytoskeleton Simulator
Sphere Class Reference

Detailed Description

A PointSet representing a spherical object using:

  • a radius,
  • the position of the center (point index 0),
  • fixed points on the surface to keep track of the orientation,
  • mobile points on the surface.

nbRefPts 'fixed' points provide a reference frame on the surface of the sphere: nbRefPts=1 in 2D, nbRefPts=3 in 3D.

The sphere can move as a solid body by rotation and translation. In addition, the surface-points can move on the surface. This motion includes diffusion and force-induced drag and is characterized by a mobility scalar. Finally, a mobile point can also carry a Single.

This class was started by Dietrich Foethke in 2005 to simulate the nucleus of S.pombe. Related classes are Bead and Solid.

Inheritance diagram for Sphere:
PointSet Mecable Object Buddy Node Inventoried Movable

Public Member Functions

 Sphere (SphereProp const *p)
 create but do not initialize More...
 
 Sphere (SphereProp const *p, real radius)
 create and initialize following the specifications of SphereProp
 
virtual ~Sphere ()
 destructor
 
void setDragCoefficientPiston ()
 calculate mobility with piston effect More...
 
void setDragCoefficientStokes ()
 calculate mobility with piston effect More...
 
void setDragCoefficient ()
 calculate mobility
 
real dragCoefficient () const
 total drag-coefficient of object (force = drag * speed)
 
void prepareMecable ()
 calculate mobility and diffusion constant
 
Vector position () const
 position of center of gravity (returns the center of the sphere)
 
real radius () const
 radius of the sphere
 
void resize (real)
 change radius
 
void foldPosition (const Modulo *)
 modulo function for periodic space
 
void setInteractions (Meca &) const
 add the interactions due to confinement
 
real addBrownianForces (real *rhs, real sc) const
 add contribution of Brownian forces
 
void reshape ()
 bring all surface points at distance spRadius from center, by moving them radially More...
 
void getPoints (const real *x)
 set position
 
unsigned addSurfacePoint (Vector const &)
 normalize point and add center
 
void makeProjection ()
 prepare for constrained projection
 
void setSpeedsFromForces (const real *X, real *Y, real, bool) const
 calculate speed of points in Y, for the forces given in X, scaled by sc
 
Spherenext () const
 a static_cast<> of Node::next()
 
Sphereprev () const
 a static_cast<> of Node::prev()
 
Tag tag () const
 return unique character identifying the class
 
const Propertyproperty () const
 return Object Property
 
void write (OutputWrapper &) const
 write to file
 
void read (InputWrapper &, Simul &)
 read from file
 
- Public Member Functions inherited from PointSet
 PointSet ()
 Constructor.
 
 PointSet (const PointSet &)
 Copy constructor.
 
PointSetoperator= (const PointSet &)
 Assignement operator.
 
virtual ~PointSet ()
 Destructor.
 
virtual void deallocatePoints ()
 free memory allocated by allocatePoints()
 
unsigned int nbPoints () const
 Number of points.
 
unsigned int lastPoint () const
 Index of the last point = nbPoints - 1.
 
unsigned int nbSegments () const
 Number of segments = nbPoints - 1.
 
unsigned int lastSegment () const
 Index of the last segment = nbPoints - 2.
 
Vector posP (const unsigned p) const
 Position of point 'p' of the object.
 
real const * addr () const
 Address of point p.
 
real const * addrPoint (const unsigned p) const
 Address of point p.
 
void setPoint (unsigned p, Vector const &w)
 Set position of point p to w.
 
void nbPoints (const unsigned n)
 Set the number of points in the array.
 
unsigned int addPoint (Vector const &w)
 Add a point, returning the array index that was used.
 
void removePoint (unsigned int p)
 Remove a point from the array psPos, returns number of points remaining.
 
virtual void truncateM (unsigned int p)
 Remove all points with indices [ 0, p-1 ], keep [ p, nbPoints() ]. More...
 
virtual void truncateP (unsigned int p)
 Keep points [ 0, p ], remove other points. More...
 
void clearPoints ()
 Remove all points.
 
void resetPoints ()
 Set all coordinates to zero (nicer for debug/testing)
 
void addNoise (real amount)
 Add random noise uniformly to all coordinate (used for testing purposes)
 
virtual void putPoints (real *) const
 copy current coordinates to argument
 
virtual void getForces (const real *ptr)
 replace current forces by the ones provided
 
Vector netForceP (const unsigned p) const
 Force on point p calculate by Brownian dynamics.
 
void movePoint (const unsigned int p, Vector const &w)
 Shift point at index p by vector w.
 
Vector diffPoints (const unsigned p) const
 Difference of two points = Q - P = vector PQ.
 
Vector diffPoints (const unsigned int p, const unsigned int q) const
 Difference of two points = Q - P = vector PQ.
 
Vector interpolatePoints (const unsigned int p, const unsigned int q, const real a) const
 Calculate intermediate position = P + a ( Q - P )
 
void calculateMomentum (real[], bool divide=false)
 calculate first momentum of point coordinates More...
 
void calculateMomentum (real[], real[], bool divide=false)
 calculate first and second momentum of point coordinates More...
 
virtual bool translatable () const
 true if object accepts translations
 
virtual void translate (Vector const &)
 Translate object (moves all the points by w)
 
virtual bool rotatable () const
 true if object accepts translations
 
virtual void rotate (Rotation const &)
 Rotate object by given rotation.
 
virtual void foldPositionG (const Modulo *)
 Call modulo around the center of gravity.
 
- Public Member Functions inherited from Mecable
 Mecable ()
 The constructor resets the pointers.
 
virtual ~Mecable ()
 Destructor de-allocates memory.
 
virtual Vector posP (unsigned int P) const =0
 return position of point P
 
virtual void putPoints (real[]) const =0
 copy current coordinates to provided array
 
virtual void getPoints (const real[])=0
 replace current coordinates of points by values from the provided array
 
virtual Vector netForceP (unsigned int p) const =0
 return Force on point p calculated at previous step by Brownian dynamics
 
virtual void getForces (const real[])=0
 replace current forces by the ones provided
 
void matIndex (Matrix::index_type index)
 Store the index where coordinates are located in Meca.
 
Matrix::index_type matIndex () const
 Index in mB of the first point. the index in the vectors is DIM*matIndex() More...
 
bool useBlock () const
 Tell Meca to use preconditionning on this object or not.
 
void useBlock (bool b)
 change preconditionning flag
 
realallocateBlock (unsigned)
 Allocate a block of the requested size.
 
realblock () const
 return allocated block
 
virtual void addRigidity (const real *X, real *Y) const
 Add rigidity terms Y <- Y + Rigidity * X. More...
 
virtual void addRigidityMatUp (Matrix &mB, int offset) const
 Add rigidity matrix elements (which should be symmetric) to provided matrix. More...
 
virtual void makeProjectionDiff (const real *forces)
 set the terms obtained from the linearization of the Projection operator, from the given forces More...
 
virtual void addProjectionDiff (const real *X, real *Y) const
 add terms from projection correction terms: Y <- Y + P' * X; More...
 
- Public Member Functions inherited from Object
 Object ()
 constructor
 
std::string reference () const
 concatenation of [ tag(), property()->index(), number() ] in plain ascii More...
 
void writeReference (OutputWrapper &) const
 write a reference that identifies the Object uniquely More...
 
void writeReference (OutputWrapper &, Tag tag) const
 write a reference, but using the provided Tag More...
 
int mark () const
 birth mark value
 
void mark (int m)
 set birth mark
 
int fleck () const
 fleck value (not stored in trajectory files)
 
void fleck (int f) const
 set fleck (the value is not stored in trajectory files)
 
Objectnext () const
 extends Node::next(), with a cast to preserve type
 
Objectprev () const
 extends Node::prev(), with a cast to preserve type
 
- Public Member Functions inherited from Node
 Node ()
 constructor set as unlinked
 
virtual ~Node ()
 destructor More...
 
bool linked () const
 true if Node is linked
 
Nodenext () const
 the next Node in the list, or zero if this is last
 
Nodeprev () const
 the previous Node in the list, or zero if this is first
 
NodeListlist () const
 the list where the object is linked, or zero
 
ObjectSetobjset () const
 return associated ObjectSet
 
- Public Member Functions inherited from Inventoried
 Inventoried ()
 initialize (name=0)
 
 ~Inventoried ()
 destructor
 
void number (Number n)
 change the serial number
 
Number number () const
 serial number : a integer identifier, unique within each class
 
- Public Member Functions inherited from Movable
 Movable ()
 constructor
 
virtual ~Movable ()
 destructor
 
virtual void setPosition (Vector const &)
 move object to specified position More...
 
virtual void rotateP (Rotation const &)
 rotate the object around its current position More...
 
- Public Member Functions inherited from Buddy
virtual ~Buddy ()
 upon destruction, goodbye is called for all buddies
 
void hello (Buddy *b)
 will make this and b mutual buddies
 
virtual void goodbye (Buddy *)
 this is called everytime a known buddy is destroyed
 
Buddybuddy (unsigned int ix) const
 return buddy at index ix
 
void buddy (Buddy *b, unsigned int ix)
 replace the buddy that may have been at index ix
 

Public Attributes

SphereProp const * prop
 Property.
 

Static Public Attributes

static const unsigned int nbRefPts = DIM+(DIM==3)
 number of reference points, including center: 1, 2, 4 for DIM = 1, 2 and 3
 
static const Tag TAG = 'o'
 a unique character identifying the class
 
- Static Public Attributes inherited from Object
static const Tag TAG = 'v'
 Object::TAG = 'v' represents the 'void' pointer.
 

Additional Inherited Members

- Static Public Member Functions inherited from PointSet
static Vector diffPoints (const real *src, const unsigned p)
 Difference of two points = P+1 - P.
 
- Static Public Member Functions inherited from Object
static std::string strReference (char, int, Number, int)
 build a string reference by concatenating (tag, property_index, number, mark) More...
 
static void readReference (InputWrapper &, int &, Number &, int &, char pretag)
 read a reference (property_index, number, mark) from input More...
 
static void writeNullReference (OutputWrapper &)
 write a reference that does not refer to any Object
 
- Static Public Member Functions inherited from Movable
static Vector readPrimitive (std::istream &, const Space *)
 read a position specified with primitives, such as 'circle 5', etc. More...
 
static Vector readPosition (std::istream &, const Space *)
 read a position in space More...
 
static Vector readDirection (std::istream &, const Vector &, const Space *)
 read an orientation, and return a normalized vector More...
 
static Rotation readRotation (std::istream &, const Vector &, const Space *)
 read a rotation specified in is, at position pos More...
 
- Protected Attributes inherited from PointSet
realpsPos
 psPos[] of size DIM*psAllocated contains DIM*psSize point-coordinates
 
real const * psFor
 psFor[] of size DIM*psAllocated contains DIM*psSize force-coordinates
 
Vector psCenter
 Center of gravity calculed in calculatePosition()
 
- Protected Attributes inherited from Node
NodenNext
 the next Node in the list
 
NodenPrev
 the previous Node in the list
 
- Protected Attributes inherited from Inventoried
Number nNumber
 object identifier, unique within the class defined by tag()
 

Constructor & Destructor Documentation

Sphere ( SphereProp const *  p)

The Sphere is returned with no points

Member Function Documentation

void reshape ( )

we get rid of finite-step errors but conserve the shape by projecting back onto the sphere, without changing the position of point zero (the center)

void setDragCoefficientPiston ( )

Expect higher friction due to flow around the sphere in a narrow tube. This is only valid if (r -a)/a << 1, where r = radius of the tube, and a = radius of the sphere.

The formula are taken from: The Motion of a Closely-Fitting Sphere in a Fluid-Filled Tube
P. Bungay and H. Brenner, Int. J. Multiphase Flow
Vol 1, pp. 25-56, 1973 (see 3.6, 4.68a and 5.11)

void setDragCoefficientStokes ( )

the mobility is that of a sphere in an infinite fluid (Stokes law)